As the components required to build a computer system have reduced in size, new categories of computer systems have emerged. One of the more recent categories of computer systems is the portable or “palmtop” computer system, or personal digital assistant (PDA). A palmtop computer system is a computer that is small enough to be held in the hand of a user and is thus “palm-sized.” As a result, palmtops are readily carried about in a briefcase or purse, and some palmtops are compact enough to fit into a person's pocket. By virtue of their size, palmtop computer systems are also lightweight and so are exceptionally portable and convenient.
Further development of PDAs has enabled their use for portable, and even wireless, access to computer networks. The portability and convenience, and, most importantly, the ready ability to synchronize a palmtop device with other computers and data sources, makes such devices ideal for use in networks that serve the workplace as well as the home.
Synchronization is a process that provides the ability to coordinate the databases maintained on a PDA with copies, or versions, of the same and similar databases maintained on a desktop or other computer, or other electronic device, such as a cell phone. Not only is the access to data generally more readily available on a desktop, but desktops or other networked devices have ready access to printers and communication with other devices in the network and the internet on a continuing basis.
Typically, in a network having a portable electronic device, a 2-way synchronization is accomplished with the portable electronic device in a cradle that communicates with the desktop. Synchronization is initiated at the PDA and the user can generally select whether the PDA's database is to be written over (one-way), or the desktop's database is to be written over (one-way the other way), or all modifications on each are to be incorporated in the other (two-way). Typically, the latter synchronization, two-way, is the most useful.
Historically, however, as the number of databases grows, the number of required synchronizations grows exponentially. Each additional copy of each database needs to be synchronized with all the other copies, resulting in a growth of time required on the order of 2n, where n is the number of database copies to be synchronized. This number is repeated for each database maintained.
In a complex network, with a dynamic set of databases, the time devoted to necessary synchronizations grows and could begin to drag down system performance with even a modest number of databases and copies. More importantly, if synchronization takes too long, users will begin to initiate synchronization less frequently than necessary, or worse, avoid it entirely.
What is required, therefore, is a mechanism for rapidly and reliably synchronizing multiple copies of one or more databases in a network environment. The need further exists to allow the expansion of the number of copies of a database that are synchronized without unnecessary limit and without an exponential increase in the amount of time required to accomplish the synchronization process.